//
//  ZLAudioEncoder.h
//  Video
//
//  Created by os on 2021/4/13.
//

/**
 .AAC文件处理流程
 (1)　判断文件格式，确定为ADIF或ADTS
 (2)　若为ADIF，解ADIF头信息，跳至第6步。
 (3)　若为ADTS，寻找同步头。
 (4)解ADTS帧头信息。
 (5)若有错误检测，进行错误检测。
 (6)解块信息。
 (7)解元素信息。
 */

#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>

@class ZLAudioConfig;

/// AAC 编码器代理
@protocol ZLAudioEncoderDelegate <NSObject>

- (void)audioEncodeCallback:(NSData *)aacData;

@end

/// AAC硬编码器（编码和回调均在异步队列执行）
@interface ZLAudioEncoder : NSObject

/// 编码器配置
@property (nonatomic, strong) ZLAudioConfig *config;
@property (nonatomic, weak) id<ZLAudioEncoderDelegate> delegate;

/// 初始化传入编码器配置
- (instancetype)initWithConfig:(ZLAudioConfig *)config;

/// 编码
- (void)encodeAudioSampleBuffer:(CMSampleBufferRef)sampleBuffer;

@end

